home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 7
/
Amiga Format AFCD07 (Dec 1996, Issue 91).iso
/
serious
/
shareware
/
comms
/
internet
/
mail-related
/
maildemon
/
pmbs2emp.lzx
/
PMBS2Emp.c
< prev
Wrap
C/C++ Source or Header
|
1996-05-05
|
2KB
|
106 lines
// PMBS2Emp 1.2b - Copyright © 05-May-1996 by Maik "BLiZZeR" Schreiber
// -------------------------------------------------------------------
//
// Dieses Programm schreibt alle Bretter des Mailboxprogramms Prometheus
// (PMBS) in eine Empfängergruppe (.emp). Der Server muß dabei laufen!
//
// Aufruf : PMBS2Emp ><Dateiname> [<Muster>]
// Beispiel: PMBS2Emp >Bretter.emp #?WERB#?
//
// Mit dem Aufruf "PMBS2Emp" (also ohne Parameter) kann man sich die
// Bretter auch in die Shell ausgeben lassen.
//
// Der Parameter <Muster> bestimmt die auszugebenden Bretter. Wird kein
// Muster angegeben, wird automatisch "#?" genommen, also alle Bretter.
//
//
// History:
// --------
// - 1.0, 12-Jan-1996:
// - erste Version von PMBS2Emp (Sourcecode in AmigaE)
//
// - 1.1, 25-Apr-1996:
// - Sourcecode nach C umgesetzt
//
// - 1.2, 03-May-1996:
// - Patternmatching möglich
// - 1.2b, 05-May-1996:
// - Abbruch mit CTRL+C möglich
#define WBWINNAME "CON:0/11/640/189/PMBS2Emp"
#include <exec/types.h>
#include <pragma/exec_lib.h>
#include <pragma/dos_lib.h>
#include <dos/dos.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <wbstartup.h>
void upperstr(char *str)
{
ULONG len,
dummy;
len = strlen(str);
for (dummy = 0; dummy < len; dummy++)
str[dummy] = toupper(str[dummy]);
};
BOOL chkabort(void)
{
return(CheckSignal(SIGBREAKF_CTRL_C) != 0);
};
int main(int argc, char *argv[])
{
struct MsgPort *server;
Forbid();
server = FindPort("rexx_PXServer");
Permit();
if (!server)
{
cout << "Server nicht gefunden -> Abbruch!\n";
exit(RETURN_FAIL);
};
else
{
char *pat;
if (pat = (char *) malloc(256))
{
char *pattern;
ULONG len;
strcpy(pat, strlen(argv[1]) ? argv[1] : "#?");
if (pattern = (char *) malloc(len = strlen(pat) * 2 + 2))
{
ULONG *list = (ULONG *) *((ULONG *) *((ULONG *) ((ULONG) server + 198))),
max = *list * 4,
dummy;
char *str;
upperstr(pat);
ParsePatternNoCase(pat, pattern, len);
for (dummy = 4; dummy <= max && !chkabort(); dummy += 4)
{
if (strlen(str = (char *) *((ULONG *) ((ULONG) list + dummy))))
{
if (MatchPatternNoCase(pattern, str))
cout << str << "\n";
};
};
free(pattern);
};
free(pat);
};
};
exit(RETURN_OK);
};